package com.example.contactos;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Agenda implements Serializable {

	private static Agenda AGENDA = null;
	
	private ArrayList<Pessoa> contactos;

	//Para ajudar nos testes
	public void cleanup() {
		Agenda.AGENDA = null;
	}
	
	private Agenda() {
		this.contactos = new ArrayList<Pessoa>();
	}
	
	public static Agenda getInstance() {
		if (Agenda.AGENDA == null) {
			Agenda.AGENDA = new Agenda();
		} 
		
		return Agenda.AGENDA;
	}

	public void remover (Pessoa contacto) {
		contactos.remove(contacto);
	}
	
	public void adicionar(Pessoa contacto) {
		contactos.add(contacto);
	}

	public ArrayList<Pessoa> pesquisar(String textoAPesquisar) {
		ArrayList<Pessoa> novaLista = new ArrayList<Pessoa>();
		
		for (Pessoa p: contactos){
			if(p.getNome().toUpperCase().contains(textoAPesquisar.toUpperCase()))
				novaLista.add(p);
		}
		
		return novaLista;
	}
	
	public boolean existe(Pessoa pessoa) {
		for (Pessoa p : contactos) {
			if (p.equals(pessoa)) {
				return true;
			}
		}
		
		return false;
	}

	public List<Pessoa> getAll() {
		return new ArrayList<Pessoa>(contactos);
	}	

	@Override
	public String toString() {
		String res = "";

		for (Pessoa contacto : contactos) {
			res += contacto + "\n";
		}

		return res;
	}
}
